ReactNative 上车

开始学习ReactNative,简单记录下它的优势和劣势,以及再学习的第一天遇到的问题

1,为什么学习ReactNative

好处

  • 因为现在许多主流的应用都有React Native的影子,它对比原生开发更为灵活,对比H5体验更为高效,而且跨平台的支持特性。
  • 相对ionic这类PhoneGap,它效率更高,和原生之间的交互更方便。
  • 多个版本迭代后的今天,它已经拥有了丰富第三方插件支持。
  • React Native解决不了的,可以通过各位熟悉的原生来解决。
  • 更方便的热更新。

坏处

  • 尽管是跨平台,但是不同平台Api的特性与显示并不一定一致。
  • 相对增大了app的体积。
  • 调试’相对‘麻烦。
  • Android上的兼容性问题。

总的来说

React Native适合作为项目中的补充,而不是作为核心去开发APP。

2,搭建开发环境

  • Webstrom(号称web开发神器,目前对前端的了解有限,因为和android stuido师出同门,所以不商量直接选用他,当然stom也试了试,但是快捷键不如Webstrom熟悉)

  • HomeBrew(Mac系统的包管理器,用于安装NodeJS和一些其他必需的工具软件

  • Node(基于 Chrome V8 引擎的 JavaScript 运行环境)

  • Androd Studio(安卓老本家没啥说的)

  • ReactNative的命令行工具(react-native-cli,React Native的命令行工具用于执行创建、初始化、更新项目、运行打包服务(packager)等任务

    详细搭建步骤查看ReactNative中文网

一步一步安装完毕后,没错,你已经起飞了;

3,创建一个项目

  • 终端cd到你想初始化项目的文件夹

  • 1
    react-native init FirstRNApp
  • 然后会发现创建了一个FirstRNApp文件夹,这就是创建的第一个项目

项目目录

几个关键的文件

  • android文件夹,就是一个可以用android studio打开的android项目。
  • ios文件夹,是一个可以用xcode打开的ios项目。
  • index.android.js,这是android的React Native入口文件。
  • index.ios.js,这是ios的React Native入口文件。
  • package.json,类似android studio的build.gradle,你依赖的库都写在里面。
  • node_module文件夹,你依赖的库下载下来都存放在里面,属于git的忽略文件,你要找的依赖库源码也在里面,包括React和React Native。
  • jscode文件夹,是自己创建的文件夹,用来存放自己写的js文件。

需要注意的点

package.json

类似于android studio中的build.gradle添加远程依赖,不同的是,package.json大多数时候不需要我们手动添加,我们只需要在根目录通过命令行,npm install xxxxxx --save 就可以依赖一个库了。

install之后,库的依赖信息,自动被写到package.json里面,对应的库也会被下载到node_module文件夹中,类似android studio依赖后把aar同步到本地。

package.json


node_module

node_module是一个忽略文件,提交的时候不需要提交到git上,类似android studio远程依赖下来的aar,也不会提交到git上。其他人在使用React Native项目时,只需要npm install,工程就会根据package.json,去同步下载各个依赖库到node_module。

:有时候还需要运行react-native linkreact-native link xxx,这是因为有些第三方库是通过原生代码加React Native实现的,通过这个命令,可以自动把相关的配置代码,自动添加到android和ios工程中。


运行这个项目

作为安卓端有两种方式,ios也同样有两种

  • cd到项目根目录

  • 1
    react-native run-android【react-native run-ios】
  • 或者用android stuido直接打开项目中的android文件夹(上面有说过,这是一个可以独立打开的安卓项目)

遇到的小坑

1,无法从资产的index.android.bundle中加载脚本。确保你的包被正确打包或者你正在运行一个packager服务器

bundle无法加载报错

搜索了一波,这个错误很常见,解决的办法也很常见,如下

  • 打开自己的项目文件夹,在Android/app/src/main目录下创建一个空的assets文件夹
  • cd到项目根目录,执行
1
react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
  • 事实证明并没有解决我的问题
  • 解决我的问题的是下面这行
1
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res

两者的区别

我们可以回头看上面创建完项目的截图,老版的是分别有index.android.js和index.ios.js

而我创建的却没有这两个文件,只有一个index.js,修改完之后,我们创建的assets目录下会生成bundle的两个文件

运行成功(android端)

运行成功截图

相关资料

[恋猫月亮博客]https://www.jianshu.com/p/97692b1c451d)

中文网

报错

本文仅作个人学习总结,如有出入不够严谨的地方,请联系更改。

ReactNative才刚刚起步学习,麻烦和坑后续还会经常碰到。但是,既然选择了学习,就要坚持下来!

文章目录
  1. 1. 1,为什么学习ReactNative
    1. 1.1. 好处
    2. 1.2. 坏处
    3. 1.3. 总的来说
  2. 2. 2,搭建开发环境
  3. 3. 3,创建一个项目
  4. 4. 几个关键的文件
    1. 4.1. 需要注意的点
  5. 5. 运行这个项目
    1. 5.1. 遇到的小坑
      1. 5.1.1. 1,无法从资产的index.android.bundle中加载脚本。确保你的包被正确打包或者你正在运行一个packager服务器
  6. 6. 运行成功(android端)